#include <stdio.h>

// int main()
// {
//     printf("test\n");
//     return 0;
// }

// int main()
// {
//     char c = 'a';
//     for(int i = 0;i<26;i++)
//     {
//         printf("%c",c++);
//     }
//     printf("\n");
//     return 0;
// }

// int main()
// {
//     int capital_num = 0;
//     int lower_case_num = 0;
//     int order_num = 0;
//     char c;
//     printf("请输入信息：");
//     while((c = getchar()) != '#')
//     {
//         if(c >= 65 && c <= 90 )
//         {
//             capital_num++;
//         }
//         else if(c >= 97 && c <= 122)
//         {
//             lower_case_num++;
//         }
//         else
//         {
//             order_num++;
//         }
//     }
//     printf("大写字母：%d",capital_num);
//     printf("小写字母：%d",lower_case_num);
//     printf("其他：%d\n",order_num);

//     return 0;
// }

// int main()
// {
//     char *str[52];
//     char c;
//     scanf("%c", &c);
//     int x = c - 'A';
//     int y = x * 2;
//     for (int i = 0; i <= x; i++)
//     {
//         char a = 'A';
//         for (int j = 0; j <= y; j++)
//         {
//             if(j >= x - i && j <= x + i)
//             {
//                 if(j < x)
//                 printf("%c",a++);
//                 else
//                 {
//                 printf("%c",a--);
//                 }
//             }
//             else
//             {
//                 printf(" ");
//             }
//         }
//         printf("\n");
//     }
//     return 0;
// }

// #include <sys/types.h>
// #include <sys/stat.h>
// #include <unistd.h>
// #include <string.h>
// #include <fcntl.h>

// int main()
// {
//     umask(0);
//     int fd;
//     fd = open("a.txt", O_RDONLY, 0777);
//     if (fd == -1)
//     {
//         printf("open error\n");
//     }
//     else
//     {
//         printf("open success,fd = %d\n", fd);
//     }

//     int fd_2 = open("b.txt", O_RDWR | O_CREAT, 0777);
//     if (fd == -1)
//     {
//         printf("open error\n");
//     }
//     else
//     {
//         printf("open success,fd = %d\n", fd);
//     }

//     char buffer[10] = {0};
//     int size = sizeof(buffer);
//     while (read(fd, buffer, sizeof(buffer) - 1) != 0)
//     {
//         // printf("%s", buffer);
//         write(fd_2,buffer,strlen(buffer));
//         memset(buffer,0,sizeof(buffer));
//     }

//     close(fd);
//     close(fd_2);
//     return 0;
// }

// int main()
// {
//     int arr_1[10] = {1,2,3,4,5,6,7,8,9,10};
//     int arr_2[10] = {10,11,12,13,14,15,16,17,18,19};
//     int arr_3[10] = {0};
//     for(int i = 0 ;i < sizeof(arr_1) / 4;i++)
//     {
//         arr_3[i] = arr_1[i]+ arr_2[i];
//         printf("arr_3[%d]:%d\n",i,arr_3[i]);
//     }

//     return 0;
// }

// #include <sys/types.h>
// #include <sys/stat.h>
// #include <unistd.h>
// #include <string.h>
// #include <stdio.h>
// #include <fcntl.h>
// //黑000000
// //红ED1C24
// //黄FFC90E

// int main()
// {
//     int fd = open("/dev/fb0",O_RDWR);
//     if(fd == -1)
//         perror("open /dev/fb0 error");

//     int color_1 = 0x00000000;
//     int color_2 = 0x00ED1C24;
//     int color_3 = 0x00FFC90E;
//     int color_4 = 0x000306D9;
//     int color_5 = 0x00FFFFFF;
//     int color_6 = 0x00ED1C24;
//     for(int i = 0;i < 480;i++)
//     {
//         if(i < 160)
//         for(int j = 0;j<400;j++)
//             write(fd,&color_1,sizeof(color_1));

//         if(i >=160 && i < 320)
//             for(int j = 0;j<400;j++)
//                 write(fd,&color_2,sizeof(color_2));

//         if(i >=320)
//             for(int j = 0;j<400;j++)
//                 write(fd,&color_3,sizeof(color_3));

//         for(int j = 0;j<133;j++)
//         {
//             write(fd,&color_4,sizeof(color_4));
//         }

//         for(int j = 0;j<133;j++)
//         {
//             write(fd,&color_5,sizeof(color_5));
//         }

//         for(int j = 0;j<134;j++)
//         {
//             write(fd,&color_6,sizeof(color_6));
//         }
//     }

//     close(fd);
//     return 0;
// }

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>

int main()
{

    // 打开LCD屏
    int lcd_fd = open("/dev/fb0", O_RDWR);
    if (lcd_fd == -1)
    {
        perror("open lcd failed!\n");
        return -1;
    }

    // 写颜色数据到fb0
    int red = 0x00ff0000;
    int blue = 0x000000ff;
    int x, y;
    int x0 = 200, y0 = 200, r = 50;
    int x1 = 250, y1 = 250;
    for (y = 0; y < 480; y++)
    {
        for (x = 0; x < 800; x++)
        {
            if (y >= 150 && y <= 200)
            {
                if ((x - x0) * (x - x0) + (y - y0) * (y - y0) <= r * r)
                {
                    write(lcd_fd, &blue, 4);
                }
                else
                {
                    write(lcd_fd, &red, 4);
                }
            }
            else if (y >= 200 && y <= 300)
            {
                if (x >= 150 && x <= 250)
                {
                    write(lcd_fd, &blue, 4);
                }
                else if (x >= 250 && x <= 300)
                {
                    if ((x - x1) * (x - x1) + (y - y1) * (y - y1) <= r * r)
                    {
                        write(lcd_fd, &blue, 4);
                    }
                    else
                    {
                        write(lcd_fd, &red, 4);
                    }
                }
                else
                {
                    write(lcd_fd, &red, 4);
                }
            }
            else
            {
                write(lcd_fd, &red, 4);
            }
        }
    }

    // 关闭文件
    close(lcd_fd);
    return 0;
}
